// Copyright 2021 by 马万里. All rights reserved.
// 开发团队 ：   鸡中之霸
// 开发人员 ：   马万里
// 开发时间 ：   2021/2/26 17:56
// 文件名称 ：   oss_conn.go
// 工程名称 ：   netpan
// 开发工具 ：   GoLand
//

package oss

import (
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	cfg "johnsonsmile.cn/netpan/config"
	"net/http"
)

var ossCli *oss.Client

// Client: 创建OssClient对象
func Client() *oss.Client {
	if ossCli != nil {
		return ossCli
	}
	ossCli, err := oss.New(
		cfg.OSSEndpoint,
		cfg.OSSAccesskeyID,
		cfg.OSSAccessKeySecret)
	if err != nil {
		fmt.Println(err.Error())
		return nil
	}
	return ossCli
}

// 获取bucket的存储空间
func Bucket() *oss.Bucket {
	cli := Client()
	if cli != nil {
		bucket, err := cli.Bucket(cfg.OSSBucket)
		if err != nil {
			fmt.Println(err.Error())
			return nil
		}
		return bucket
	}
	return nil
}

// DownloadUrl: 临时授权下载url
func DownloadUrl(objName string, fileName string) string {
	signUrl, err := Bucket().SignURL(objName, http.MethodGet, 3600,
		oss.ContentDisposition("attachment;filename=\""+fileName+"\""),)
	if err != nil {
		fmt.Println(err)
		return ""
	}
	return signUrl
}
